﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Shape.Events;
using Shape.Mvp.Commands;
using Shape.Mvp.Views;
using System.Windows.Forms;

namespace Shape.Mvp
{
	public interface IApplicationController
	{
      void Execute<TCommand>() where TCommand : ICommand;
      void Execute<TCommand, TArg>(TArg arg) where TCommand : ICommand<TArg>;

      void Publish<TEvent>(TEvent item);
      void AddEventSubscriber(ISubscriber subscriber);

      IWindowMode Show(IView view);
      IWindowMode Show(Form form);
	}
}
